//
//  RootViewController.swift
//  大新浪微博
//
//  Created by 周太锋 on 16/2/24.
//  Copyright © 2016年 apple. All rights reserved.
//

import UIKit

// 根视图控制器-其他主控制器的基类
class RootViewController: UIViewController {
    
    //----公共属性----
    //用户登录标记
    var userLogon = false
    //表格视图
    lazy var tableView = UITableView(frame: CGRectZero, style: .Plain)
    
    // 下拉刷新控件
    lazy var refreshControl = UIRefreshControl()
    
    // 上拉刷新视图
    lazy var pullupView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
    
    //访客视图 - 如果登录成功，就不创建访客视图
    var visitorView: VisitorView?
    
    //----视图生命周期----
    override func loadView() {
        
        //用户登录显示 tableview 、 否则显示访客视图
        userLogon ? setupTableView(): setupVisitorView()

        
        
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        loadData()
    }
    
    // 加载数据 - 真正的数据加载，应该放在子类中实现
    func loadData() {
        
    }

    
}

// MARK: - VisitorViewDelegate
extension RootViewController: VisitorViewDelegate {
    
    func visitorViewDidRegister() {
        
    }
    
    func visitorViewDidLogin() {
//        let oauthVC = 
    }
}

// MARK: - 设置界面
extension RootViewController {
    
    //设置访客视图
    private func setupVisitorView() {
        
        visitorView = VisitorView()
        
        //设置代理
        visitorView?.delegate = self
        
        view = visitorView
        
        //设置状态栏按钮 
        navigationItem.leftBarButtonItem = UIBarButtonItem(
            title: "注册",
            style: .Plain,
            target: self,
            action: "visitorViewDidRegister")
        navigationItem.rightBarButtonItem = UIBarButtonItem(
            title: "登录",
            style: .Plain,
            target: self,
            action: "visitorViewDidLogin")

    }
    
    //设置表格视图
    private func setupTableView() {
        
        view = tableView
        
        //设置数据源
        tableView.dataSource = self
        tableView.delegate = self
    }
    
    //设置刷新控件  - 需要刷新控件的子控制器单独调用 " setupRefreshControl"
    //私有函数不能被子类 '继承'
    func setupRefreshControl() {
        
        tableView.addSubview(refreshControl)
        
        //设置监听事件
        refreshControl.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        
        //设置上拉刷新视图
        tableView.tableFooterView = pullupView
    }
}

extension RootViewController: UITableViewDataSource, UITableViewDelegate {
    
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
    
    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        
        // 根据数据源判断是否是最后一行
        let section = tableView.numberOfSections - 1
        let row = tableView.numberOfRowsInSection(section) - 1
        

        // 判断是否是最后一行，同时没有正在上拉刷新
        if section == indexPath.section && row == indexPath.row && !pullupView.isAnimating() {

            
            // 启动菊花
            pullupView.startAnimating()
            // 上拉刷新加载数据
            loadData()
            
        }
    }
}
